using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;

namespace ASPApiDemo.Common.Core;

// 内部应用类，仅用于应用程序初始化和服务配置，不对外暴露功能
public static class InternalApp
{
    // 存储应用程序的服务集合，用于服务注册和构建，配置阶段使用
    internal static IServiceCollection InternalServices;
    // 应用程序的根服务容器，用于解析全局服务，运行时使用
    internal static IServiceProvider RootServices;
    // Web主机环境，提供关于Web应用程序运行环境的信息
    internal static IWebHostEnvironment WebHostEnvironment;
    // 泛型主机环境，提供关于应用程序运行环境的信息
    internal static IHostEnvironment HostEnvironment;
    // 应用程序配置对象，用于访问配置信息
    internal static IConfiguration Configuration;
    // 配置Web应用程序构建器，初始化环境和服务集合
    public static void ConfigureApplication(this WebApplicationBuilder web)
    {
        // 设置泛型主机环境
        HostEnvironment = web.Environment;
        // 设置Web主机环境
        WebHostEnvironment = web.Environment;
        // 设置内部服务集合
        InternalServices = web.Services;
    }
    // 配置应用程序的配置对象
    public static void ConfigureApplication(this IConfiguration configuration)
    {
        // 设置全局配置对象
        Configuration = configuration;
    }
    // 配置应用程序主机，设置根服务提供器
    public static void ConfigureApplication(this IHost app)
    {
        // 设置根服务提供器(容器)
        RootServices = app.Services;
    }
}